package com.ruoyi.site.service;

import java.util.List;
import com.ruoyi.site.domain.UserLicenses;
import org.apache.ibatis.annotations.Param;

/**
 * 用户授权Service接口
 */
public interface IUserLicensesService
{
    /**
     * 新增用户授权
     */
    int insertUserLicenses(UserLicenses userLicenses);

    /**
     * 查询用户授权列表
     */
    List<UserLicenses> selectUserLicensesList(UserLicenses userLicenses);

    /**
     * 检查用户是否拥有下载授权（至少一条记录）
     */
    boolean checkUserHasLicense(Long userId, Long productId, String productType);

    /**
     * 增加授权记录的下载次数
     * (在 TracksController 中调用)
     */
    int recordDownload(Long licenseId);

    /**
     * 根据用户和产品信息记录下载次数
     * 查找符合条件的授权记录，并增加其下载计数。
     * @param userId 用户ID
     * @param productId 产品ID (trackId 或 sfxId)
     * @param productType 产品类型 ('track' 或 'sfx')
     * @return 成功更新的记录数
     */
    int recordDownloadByProduct(Long userId, Long productId, String productType); // <--- 新增此方法

    /**
     * 增加授权记录的下载次数
     * (保留此方法，供内部或特殊情况使用)
     */
    int incrementDownloadCount(Long licenseId);
}